module LESComposer
{
	//图像信息使用键值对来表示
	dictionary<string, string> ImageInfo;
	//每张图片上分行打印的信息
	sequence<string> ImageText;
	//字段信息，每张图片上显示的字符串
	sequence<ImageText> ImagesText;
	//图片信息，每张抓拍图片对应一个ImageInfo
	sequence<ImageInfo> SeqImageInfo;
	//扩展信息(键值对表示)
	dictionary<string, string> ExtendStrings;
	//文件名列表
	sequence<string> ImageFileNames;

	//单行打印信息配置
	class LineConfig
	{
		int isTitle;//是否为标题栏
		int composationMode;//混成模式
		int autoFontResize;//文字自动缩放(1-自动换行并匹配文字大小或2-截断显示)
		int alignment;//文字对齐方式
		string bound;//预留边界
		string foregroundColor;//前景色
		string backgroundColor;//背景色
		string rect;//显示位置(在单张图片上的位置)
		string font;//字体
		ExtendStrings extConfig;//单行打印信息扩展配置
	};
	//图片位置信息
	struct PicRect
	{
		int srcPicIdx;//使用原图的索引号,-1表示使用空白图片
		string srcRect;//使用的原图位置
		string dstRect;//在合成后的大图上的位置
	};

	//每张图片上打印信息配置
	sequence<LineConfig> ImagePrintConfig;//图片的打印信息配置
	sequence<ImagePrintConfig> SeqImagePrintConfig;//各图片文字配置
	sequence<PicRect> SeqRectString;//各图片合成后大小以及位置
		
	//图片合成配置
	class ComposeConfig
	{
		string imageSize;//合成后图片大小,空字符串时按抓拍图片大小进行计算
		string spaceColor;//空白处填充的颜色
		SeqImagePrintConfig picConfig;//各图片打印信息配置
		SeqRectString picPosition;//各图片合成后大小以及位置
		ExtendStrings extConfig;//扩展字段
	};

	//图片合成策略
	dictionary<string,ComposeConfig> ComposeStrategy;
	
	//合成软件参数配置
	class ServiceConfigParams
	{
		int workerNum;//工作线程数量
		int composeQueueDeep;//合成队列深度
		int imageQueueDeep;//图像队列深度
		int maxNodeNum;//最大节点数
		int saveProcessedImageFlag;//是否保存处理后图片
		int composeImcompleteImageFlag;//是否合成不完整的违章图片(违章图片分组时有遗漏)
		int saveImcompleteImageFlag;//是否保存不完整的违章图片
		int periodicallyCleanImage;//定期清理图片，时间以天计数，00:00时扫描目录并进行判定
		string rawImagePath;//原图保存目录,为空时不保存原图
		ExtendStrings extConfig;//扩展字段
	};

	//动态文本
	class ComposeDynamicText
	{
		string strategy;//本次合成使用的策略名称
		string fileName;//合成后文件名
		ImageFileNames rawfileNames;//各原图片文件名
		ImagesText imageText;//各图片上分行的打印信息
		ExtendStrings extConfig;//扩展字段
		
	};



	//合成软件配置查询服务
	interface ServiceConfig
	{
		//获取服务配置
		int getServiceConfig(out ServiceConfigParams serviceCfg);
		//获取合成策略配置
		int getComposeStrategy(out ComposeStrategy st);
	};

	//动态合成文本信息服务
	interface ComposeTextService
	{
		//根据图片信息生成文件名和打印信息
		int getComposeString( SeqImageInfo imagesInfo,out ComposeDynamicText text);
		//根据图片信息生成不完整的抓拍证据图片所需信息
		int getImcompleteImageFilename( SeqImageInfo imagesInfo,out ComposeDynamicText text);
	};

	//DSP(后期处理)的参数配置服务
    dictionary<string,string> DSPParamDic;//各DSP对应的配置参数(DSP名，配置参数表)
    dictionary<string,string> DSPFuncFlags;//各DSP使用的功能标志位
    struct DSPParam
    {   
        string dspName;//使用的DSP名称
        DSPParamDic dspParams;//参数配置
        DSPFuncFlags funcFlags;//功能标志
    };
	sequence<DSPParam> DSPs;//单张图片使用的DSP顺序及其参数
    sequence<DSPs> SeqImageDSP;//图片组使用的DSP
	//各图片使用的后期处理及顺序
	class DSPConfig
	{
		SeqImageDSP dsp;//每张图片对应的DSP配置
        ExtendStrings extConfig;//扩展字段
	};

	interface DSPConfigService
	{
        //获取DSP配置策略
        string getDSPStrategy();
		//根据图像信息决定使用的动态图像处理顺序及其参数
		int getDSPConfig(SeqImageInfo imagesInfo,string dspStrategy,out DSPConfig dspCfg);
    };	
};
